---
sidebar_position: 2
---

# Задачи

## Множественное наследование

Создайте два класса с именами `Mammals` (Млекопитающие) и `MarineAnimals` (Морские животные). Создайте еще один класс с именем `BlueWhale` (Синий кит), который наследует оба вышеперечисленных класса. Теперь создайте в каждом из этих классов функцию `print`, которая печатает `Я - млекопитающее`, `Я - морское животное` и `Я принадлежу к обеим категориям: Млекопитающие и Морские животные` соответственно. Теперь создайте объект для каждого из вышеперечисленных классов и продемонстрируйте вызов:

- функции `print` `Mammals` экземпляра класса `Mammals`;
- функции `print` `MarineAnimals` экземпляра класса `MarineAnimals`;
- функции `print` `BlueWhale` экземпляра класса `BlueWhale`;
- функции `print` родительских классов `BlueWhale` экземпляра класса `BlueWhale`.

## Ромбовидное наследование

Ромбовидное наследование недаром получило название "ужасного бриллианта наследования", поскольку рассматриваемая проблема избыточности при передаче аргументов вызова конструкторам классов, выступающих в роли промежуточных производных классов, далеко не единственная. Одна из подобных проблем была затронута в связи с одиночным наследованием и ролью виртуальных деструкторов базовых классов. Ромбовидное наследование будет хорошо управляемым, если виртуальный базовый класс либо классы, производные непосредственно от него, являются абстрактными. Напомним, что класс становится **абстрактным**, если в нем объявляется хотя бы одна чисто виртуальная компонентная функция (например, деструктор).

Приведите пример открытого множественного наследования компонентов виртуального базового класса `A_based` и двух прямых базовых классов `B_derived` и `C_derived` их производным классом `D_derived`. В примере необходимо продемонстрировать:

- использование абстрактных классов;
- вызовы конструкторов и деструкторов классов с помощью сообщений в консоль;
- разрешение проблемы двойственности при одинаковых названиях функций в классах (в базовых классах объявлены функции с одним и тем же именем).
